#pragma once
#include <memory>

class Message;
class Response
{
public:
    enum State {
        Ok = 0,
        Fail,
        Timeout,
        InProgress,
    };
    Response();
    std::shared_ptr<Message> &message();
    void setMessage(const std::shared_ptr<Message> &msg);
    void setMessage(std::shared_ptr<Message> &&msg);

    State state() const;
    void setState(State state);

private:
    State m_state;
    std::shared_ptr<Message> m_msg;
};
